package com.example.shuiyin.service;

import com.example.shuiyin.dto.UserQuotaInfo;

import java.util.List;

public interface QuotaService {
    /**
     * 获取用户配额信息
     */
    UserQuotaInfo getUserQuotaInfo(Long userId);
    
    /**
     * 检查用户是否有处理配额
     */
    boolean hasProcessingQuota(Long userId);
    
    /**
     * 记录处理配额使用
     */
    void recordProcessingUsage(Long userId);
    
    /**
     * 记录存储配额使用
     */
    void recordStorageUsage(Long userId, long size);
    
    /**
     * 减少存储配额使用
     */
    void reduceStorageUsage(Long userId, long size);
    
    /**
     * 设置存储配额使用量
     */
    void setStorageUsage(Long userId, long size);

    /**
     * 获取所有接近配额上限的用户
     * @param threshold 百分比阈值（0-100）
     * @return 用户ID列表
     */
    List<Long> getUsersNearQuotaLimit(int threshold);

    /**
     * 检查用户存储配额是否足够
     * @param userId 用户ID
     * @param requiredSize 需要的空间大小（字节）
     * @return 是否有足够空间
     */
    boolean hasStorageQuota(Long userId, long requiredSize);

    /**
     * 获取用户存储使用量
     */
    long getStorageUsage(Long userId);

    /**
     * 获取用户存储配额
     */
    long getStorageQuota(Long userId);
} 